﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;
using FacadeInterface;
using FacadeImplemention;
using EntityLayer;

namespace pryCallCenter.RegistrarPedido
{
    public partial class frmRegistrarPedido : System.Web.UI.Page
    {
        clsIFacadeActualizarPedido InterfaceActualizarPedido = new clsFacadeActualizarPedido();
        clsIFacadeRegistrarPedido InterfaceRegistrarPedido;

        private static List<DocumentoCabecera_Result> ListaDocumentoCabecera = null;
        private static List<DocumentoDetalle_Result> ListaDocumentoDetalle = null;
        private static List<EliminarDocumentoDetalle_Result> ListaEliminarDocumentoDetalle = null;
        private static List<DocumentoCabecera_InfoAuditoria_Result> ListaDocumentoCabeceraAuditoria = null;

        Documento objDocumento;
        DocumentoDetalle objDocumentoDetalle;
        String msg;
 
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!IsPostBack)
                {
                    if (Session["USUARIO"] == null)
                    {
                        Response.Redirect("~/Account/Login.aspx", false);
                    }
                    //((Persona)Session["USUARIO"]).CodigoPersona.ToString();
                    if (Request.QueryString["nuevo"] == "nuevo")
                    {
                        Session["tipoRegistro"] = 1;
                        Response.Redirect("~/Procesos/RegistrarPedido/frmRegistrarPedido.aspx", false);
                    }
                }
                LlenardgvClientes();
                LlenardgvProducto();
                ListarOperador();
                if (!IsPostBack)
                {
                    txtNPedido.Text = InterfaceActualizarPedido.TraerUltimoIDPedido();
                    dtpFecha.Date = DateTime.Now.Date;
                    if (Session["tipoRegistro"] != null)
                    {
                        txtUsuario.Text = ((Persona)Session["USUARIO"]).Nombres;
                        int tipoRegistro = Convert.ToInt16(Session["tipoRegistro"].ToString());
                        String nropedido;
                        if (Session["nropedido"] != null)
                        {
                            nropedido = Session["nropedido"].ToString();
                        }
                        else
                        {
                            nropedido = "";
                        }
                        LlenarRegistro(tipoRegistro, nropedido);
                    }
                    else
                    {
                        msg = "Debe Acceder Desde Esta Ventana.";
                        Redireccionar(msg, false);
                    }
                }
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                MostrarComentario(msg);
            }
        }

        private void ListarOperador()
        {
            cboOperador.DataSource = InterfaceActualizarPedido.ListarOperador();
            cboOperador.TextField = "Nombre";
            cboOperador.ValueField = "CodigoOperador";
            cboOperador.DataBind();
        }

        private void LlenardgvClientes()
        {
            dgvClientes.DataSource = InterfaceActualizarPedido.ListarClientePersona();
            dgvClientes.DataBind();
        }

        private void LlenardgvProducto()
        {
            dgvProducto.DataSource = InterfaceActualizarPedido.ListarProducto();
            dgvProducto.DataBind();
        }

        protected void btnAceptar_Click(object sender, EventArgs e)
        {
            try
            {
                int ID = Convert.ToInt32(dgvClientes.GetRowValues(dgvClientes.FocusedRowIndex, "CodigoPersona").ToString());
                String NOM = dgvClientes.GetRowValues(dgvClientes.FocusedRowIndex, "Nombres").ToString();
                String APEPA = dgvClientes.GetRowValues(dgvClientes.FocusedRowIndex, "ApellidoPaterno").ToString();
                String APEMA = dgvClientes.GetRowValues(dgvClientes.FocusedRowIndex, "ApellidoMaterno").ToString();
                String TELF = dgvClientes.GetRowValues(dgvClientes.FocusedRowIndex, "Telefono") == null ? "" : dgvClientes.GetRowValues(dgvClientes.FocusedRowIndex, "Telefono").ToString();
                String DIR = dgvClientes.GetRowValues(dgvClientes.FocusedRowIndex, "Direccion") == null ? "" : dgvClientes.GetRowValues(dgvClientes.FocusedRowIndex, "Direccion").ToString();
                String CUENTA = dgvClientes.GetRowValues(dgvClientes.FocusedRowIndex, "Cliente.CuentaBancaria") == null ? "" : dgvClientes.GetRowValues(dgvClientes.FocusedRowIndex, "Cliente.CuentaBancaria").ToString();
                String DOC = dgvClientes.GetRowValues(dgvClientes.FocusedRowIndex, "NumeroDocumento") == null ? "" : dgvClientes.GetRowValues(dgvClientes.FocusedRowIndex, "NumeroDocumento").ToString();
                String CORREO = dgvClientes.GetRowValues(dgvClientes.FocusedRowIndex, "Correo") == null ? "" : dgvClientes.GetRowValues(dgvClientes.FocusedRowIndex, "Correo").ToString();
                hid_codCliente.Text = ID + "";
                txtCliente.Text = String.Format("{0} {1}, {2}", APEPA, APEMA, NOM);
                txtNIF.Text = DOC;
                txtCorreo.Text = CORREO;
                txtTelefono.Text = TELF;
                txtDireccion.Text = DIR;
                txtNCuenta.Text = CUENTA;
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                MostrarComentario(msg);
            }
        }

        protected void btnInsertar_Click(object sender, EventArgs e)
        {
            ListaDocumentoDetalle.Add(new DocumentoDetalle_Result());
            dgvDetalle.DataSource = ListaDocumentoDetalle;
            dgvDetalle.DataBind();
        }
        
        public void EliminarItem()
        {
            try
            {
                if (dgvProducto.FocusedRowIndex >= 0)
                {
                    int Index = dgvDetalle.FocusedRowIndex;
                    txtCorreo.Text = ListaDocumentoDetalle.Count().ToString();
                    ListaDocumentoDetalle.RemoveAt(Index);
                    dgvDetalle.DataSource = ListaDocumentoDetalle;
                    dgvDetalle.DataBind();
                    txtTotalPrecio.Text = CalcularTotal().ToString("#,###,##0.00");
                }
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                MostrarComentario(msg);
            }
        }

        protected void btnAceptarProducto_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtPenalidad.Text.Trim() != "" && txtCantidad.Text.Trim() != "" && txtCantidad.Text.Trim() != "0")
                {
                     String codigo, descrip;
                    Decimal penalidad, precio, preciototal;
                    int Index = dgvDetalle.FocusedRowIndex;
                    int IndexProd = dgvProducto.FocusedRowIndex;
                    int cant;
                    
                    codigo = dgvProducto.GetRowValues(IndexProd, "CodigoProducto").ToString();
                     descrip = dgvProducto.GetRowValues(IndexProd, "Descripcion").ToString();
                     penalidad = Convert.ToDecimal(txtPenalidad.Text.Trim());
                     // validacion penalidad
                  clsIFacadeRegistrarPedido ValidaPenalidad  =new clsFacadeRegistrarPedido();
                  if (!ValidaPenalidad.Validar_Penalidad(codigo, penalidad))
                  {
                      lblMensaje.Text = "La Penalidad no debe ser mayor a el precio del Producto";
                      ScriptManager.RegisterStartupScript(this, GetType(), "script", "pcMensaje.Show();", true);
                      return;
                  }
                   
                    cant = Convert.ToInt32(txtCantidad.Text.Trim());
                    precio = Convert.ToDecimal(dgvProducto.GetRowValues(IndexProd, "PrecioVenta").ToString());
                    preciototal = cant * precio;
                    DocumentoDetalle_Result Item = ListaDocumentoDetalle[Index];
                    Item.Codigo = codigo;
                    Item.Descripcion = descrip;
                    Item.Penalidad = penalidad;
                    Item.Cantidad = cant;
                    Item.preciounitario = precio;
                    Item.PrecioTotal = preciototal;
                    dgvDetalle.DataSource = ListaDocumentoDetalle;
                    dgvDetalle.DataBind();
                    txtCantidad.Text = "0";
                    txtPenalidad.Text = "0";
                    txtTotalPrecio.Text = CalcularTotal().ToString("#,###,##0.00");
                }
                else
                {
                    lblMensaje.Text = "No debe dejar la cantidad en 0";
                    ScriptManager.RegisterStartupScript(this, GetType(), "script", "pcMensaje.Show();", true);    
                }
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                MostrarComentario(msg);
            }
            
        }

        private static Decimal CalcularTotal()
        {
            Decimal Count = 0;
            foreach (DocumentoDetalle_Result Item in ListaDocumentoDetalle)
            {
                Count += Convert.ToDecimal(Item.PrecioTotal);
            }
            return Count;
        }

        public void GrabarPedido()
        {
            try
            {
                int tipoRegistro = Convert.ToInt16(Session["tipoRegistro"].ToString());
                Boolean ok;
                int empleado = Convert.ToInt16(((Persona)Session["USUARIO"]).CodigoPersona.ToString());
                String msg = tipoRegistro.ToString();
                int cant = 0;
                String nropedido, codcliente, nomcliente, titularlinea, telefaportar, codoperador, direcinst, horainst;
                nropedido = txtNPedido.Text.Trim();
                codcliente = hid_codCliente.Text.Trim();
                nomcliente = txtCliente.Text.Trim();
                titularlinea = txtTitular.Text.Trim();
                telefaportar = txtNTelefonico.Text.Trim();
                codoperador = (cboOperador.Value == null) ? "" : cboOperador.Value.ToString().Trim();
                direcinst = txtDirInstalacion.Text.Trim();
                horainst = (cboHorario.Value == null) ? "" : cboHorario.Value.ToString().Trim();
                int cant_tabla = Convert.ToInt16(dgvDetalle.VisibleRowCount.ToString());
                ok = (
                    nropedido != "" &&
                    codcliente != "" &&
                    nomcliente != "" &&
                    titularlinea != "" &&
                    telefaportar != "" &&
                    codoperador != "" && 
                    direcinst != "" &&
                    horainst != "" &&
                    cant_tabla > 0
                    ) 
                    ? true : false;

                if (ok == false)
                {
                    if (cant_tabla > 0)
                    {
                        msg = "Debe Llenar Todos Los Campos";
                    }
                    else if (cant_tabla == 0)
                    {
                        msg = "No Debe Dejar La Tabla Vacia";
                    }
                }
                else if (ok == true)
                {
                    //-------------------------------------------- LLenado de Datos -----------------------------------
                    objDocumento = new Documento();
                    String tipodoc = (hid_tipoDoc.Text != "") ? hid_tipoDoc.Text : "P";
                   // String tipdocAprob = (tipoRegistro == 6) ? "V" : tipodoc;
                    int empresa = Convert.ToInt32(((Persona)Session["USUARIO"]).Empleado.CodigoEmpresa);
                    objDocumento.Empresa = empresa;
                    objDocumento.Cliente = Convert.ToInt16(codcliente);
                    objDocumento.NumeroDocumento = nropedido;
                    objDocumento.TipoDocumento = tipodoc;
                    objDocumento.TitularLinea = titularlinea;
                    objDocumento.TelefonoaPortar = telefaportar;
                    objDocumento.CodigoOperador = codoperador;
                    objDocumento.DireccionInstalacion = direcinst;
                    objDocumento.HorarioInstalacion = horainst;
                    objDocumento.FechaDocumento = (tipoRegistro == 1) ? DateTime.Now : Convert.ToDateTime(hid_fechaDocumento.Text).Date;
                    objDocumento.MontoTotal = CalcularTotal();
                    String estado;
                    switch (tipoRegistro)
                    {
                        case 1:
                            estado = "RG";
                            break;
                        case 2:
                            estado = hid_Estado.Text;
                            break;
                        case 3:
                            estado = "";
                            break;
                        case 4:
                            estado = "AN";
                            break;
                        case 5:
                            estado = "AN";
                            break;
                        case 6:
                            estado = "AP";
                            break;
                        default:
                            estado = "";
                            break;
                    }
                    objDocumento.Estado = estado;
                    InterfaceRegistrarPedido = new clsFacadeRegistrarPedido();
                    if (tipoRegistro == 1)
                    {
                        objDocumento.RegistradoPor = empleado;
                        objDocumento.FechaRegistro = DateTime.Now;
                        ok = InterfaceRegistrarPedido.GrabarPedidoCabecera(objDocumento);
                    }
                    else if (tipoRegistro == 2 || tipoRegistro == 4 || tipoRegistro == 5 || tipoRegistro == 6)
                    {
                        objDocumento.RegistradoPor = Convert.ToInt16(hid_codRegistrado.Text);
                        objDocumento.FechaRegistro = Convert.ToDateTime(hid_fechaRegistrado.Text);
                        objDocumento.ModificadoPor = empleado;
                        objDocumento.FechaModificacion = DateTime.Now;
                        if (hid_codAprob.Text.Trim() != "" && hid_fhAprob.Text.Trim() != "")
                        {
                            objDocumento.AprobadoPor = Convert.ToInt16(hid_codAprob.Text);
                            objDocumento.FechaAprobacion = Convert.ToDateTime(hid_fhAprob.Text);
                        }
                        if (hid_codAnul.Text.Trim() != "" && hid_fhAnul.Text.Trim() != "")
                        {
                            objDocumento.AnuladoPor = Convert.ToInt16(hid_codAnul.Text);
                            objDocumento.FechaAnulacion = Convert.ToDateTime(hid_fhAnul.Text);
                        }

                        if (tipoRegistro == 4 || tipoRegistro == 5)
                        {
                            objDocumento.AnuladoPor = empleado;
                            objDocumento.FechaAnulacion = DateTime.Now;
                        }
                        if (tipoRegistro == 6)
                        {
                            objDocumento.AprobadoPor = empleado;
                            objDocumento.FechaAprobacion = DateTime.Now;
                        }
                        ok = InterfaceRegistrarPedido.ActualizarPedidoCabecera(objDocumento);
                    }
                    if (ok == true && (tipoRegistro == 2 || tipoRegistro == 1 || tipoRegistro == 6))
                    {
                        if (tipoRegistro == 6)
                        {
                            ok = InterfaceRegistrarPedido.AprobarDocumento(empresa, tipodoc, nropedido);
                        }
                        int i = 0;
                        int error = 0;
                        if (tipoRegistro == 1 || tipoRegistro == 2)
                        {
                            if (tipoRegistro == 2)
                            {
                                objDocumentoDetalle = new DocumentoDetalle();
                                ListaEliminarDocumentoDetalle = new List<EliminarDocumentoDetalle_Result>();
                                ListaEliminarDocumentoDetalle = InterfaceRegistrarPedido.EliminarDocumentoDetalle(objDocumento.Empresa, objDocumento.TipoDocumento, objDocumento.NumeroDocumento);
                                cant = Convert.ToInt16(ListaEliminarDocumentoDetalle[0].result.ToString());
                            }
                            foreach (DocumentoDetalle_Result item in ListaDocumentoDetalle)
                            {
                                objDocumentoDetalle = new DocumentoDetalle();

                                objDocumentoDetalle.Empresa = empresa;
                                objDocumentoDetalle.TipoDocumento = tipodoc;
                                objDocumentoDetalle.NumeroDocumento = nropedido;
                                objDocumentoDetalle.Secuencia = ++i;
                                objDocumentoDetalle.CodigoProducto = item.Codigo;
                                objDocumentoDetalle.Penalizacion = item.Penalidad;
                                objDocumentoDetalle.Cantidad = item.Cantidad;
                                objDocumentoDetalle.PrecioUnitario = item.preciounitario;
                                objDocumentoDetalle.Importe = item.PrecioTotal;

                                ok = InterfaceRegistrarPedido.GrabarPedidoDetalle(objDocumentoDetalle);

                                if (ok == false)
                                {
                                    error = 1;
                                    break;
                                }
                            }
                        }
                        if (error == 0)
                        {
                            if (tipoRegistro == 1)
                            {
                                msg = "Se Grabó El Pedido Correctamente";
                            }
                            else if (tipoRegistro == 2)
                            {
                                msg = "Se Actualizó El Pedido Correctamente";
                            }
                            else if (tipoRegistro == 6)
                            {
                                ok = InterfaceRegistrarPedido.AprobarDocumentoDetalle(empresa, tipodoc, nropedido);
                                msg = "Se Aprobó El Pedido Correctamente";
                            }
                            Redireccionar(msg, ok);                               
                        }
                        else if(error == 1)
                        {
                            msg = "ERROR Al Agregar o Actualizar El Detalle del Documento";
                        }
                    }
                    else
                    {
                        if (ok == true)
                        {
                            if (tipoRegistro == 4)
                            {
                                msg = "Se Anuló El Pedido Correctamente";
                            }
                            else if (tipoRegistro == 5)
                            {
                                msg = "Se Anuló La Venta  Correctamente";
                            }
                            Redireccionar(msg, ok);
                        }
                        else
                        {
                            msg = "ERROR Al Agregar La Cabecera del Documento";
                        }
                    }
                }
                MostrarComentario(msg);
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                MostrarComentario(msg);
            }
        }
        
        protected void btnOK_Click(object sender, EventArgs e)
        {
            GrabarPedido();
        }

        protected void btnOKEliminar_Click(object sender, EventArgs e)
        {
            EliminarItem();
        }

        private void HabilitarCampos(int tipoRegistro)
        {
            Boolean ok = false;
            try
            {
                if (tipoRegistro == 1 || tipoRegistro == 2)
                {
                    ok = false;
                    txtNTelefonico.ReadOnly = ok;
                    txtDirInstalacion.ReadOnly = ok;
                    txtTitular.ReadOnly = ok;
                    ok = true;
                    cboHorario.Enabled = ok;
                    cboOperador.Enabled = ok;
                    btnBuscar.Enabled = ok;
                    btnInsertar.Enabled = ok;
                    btnSeleccionarProd.Enabled = ok;
                    btnSeleccionarPack.Enabled = ok;
                    btnEliminar.Enabled = ok;
                    btnGrabar.Visible = ok;
                    btnGrabar.Text = (tipoRegistro == 1) ? "Grabar" : "Actualizar";
                    lblTitulo.Text = (tipoRegistro == 1) ? "Registrar Pedido" : "Modificar Pedido";
                }
                else if (tipoRegistro == 3 || tipoRegistro == 4 || tipoRegistro == 5 || tipoRegistro == 6)
                {
                    ok = true;
                    txtNTelefonico.ReadOnly = ok;
                    txtDirInstalacion.ReadOnly = ok;
                    txtTitular.ReadOnly = ok;
                    if (tipoRegistro == 4 || tipoRegistro == 5)
                    {
                        btnGrabar.Visible = ok;
                        btnGrabar.Text = (tipoRegistro == 4) ? "Anular Pedido" : "Anular Venta";
                        lblTitulo.Text = (tipoRegistro == 4) ? "Anular Pedido" : "Anular Venta";
                    }
                    else if (tipoRegistro == 6)
                    {
                        btnGrabar.Visible = ok;
                        btnGrabar.Text = "Aprobar Pedido";
                        lblTitulo.Text = "Aprobar Pedido";
                    }
                    ok = false;
                    cboHorario.Enabled = ok;
                    cboOperador.Enabled = ok;
                    btnBuscar.Enabled = ok;
                    btnInsertar.Enabled = ok;
                    btnSeleccionarProd.Enabled = ok;
                    btnSeleccionarPack.Enabled = ok;
                    btnEliminar.Enabled = ok;
                    if (tipoRegistro == 3)
                    {
                        pnlInfoAudit.Visible = true;
                        btnGrabar.Visible = ok;
                        lblTitulo.Text = "Ver Detalle Pedido";
                    }
                }
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                MostrarComentario(msg);
            }
        }

        private void LlenarRegistro(int tipoRegistro, String nropedido)
        {
            Boolean ok = false;
            HabilitarCampos(tipoRegistro);
            ListaDocumentoDetalle = new List<DocumentoDetalle_Result>();
            if (tipoRegistro == 2 || tipoRegistro == 3 || tipoRegistro == 4 || tipoRegistro == 5 || tipoRegistro == 6)
            {
                ok = obtenerCabeceraPedido(nropedido);
                if (ok)
                {
                    if (tipoRegistro == 3)
                    {
                        obtenerCabeceraPedidoInfoAuditoria(nropedido);
                    }
                    obtenerDetallePedido(nropedido);
                }
            }
        }

        private Boolean obtenerCabeceraPedido(String nropedido)
        {
            Boolean ok = false;
            try
            {
                InterfaceRegistrarPedido = new clsFacadeRegistrarPedido();
                ListaDocumentoCabecera = new List<DocumentoCabecera_Result>();
                ListaDocumentoCabecera = InterfaceRegistrarPedido.ListarDocumentoCabecera(nropedido);
                String Npedido = ListaDocumentoCabecera[0].nropedido;
                String codcliente = ListaDocumentoCabecera[0].codpersona.ToString();
                String nomcliente = ListaDocumentoCabecera[0].cliente;
                String tipoDoc = ListaDocumentoCabecera[0].tipodocumento;
                String Ndoc = ListaDocumentoCabecera[0].nrodocumento;
                String telef = ListaDocumentoCabecera[0].telefono;
                String correo = ListaDocumentoCabecera[0].correo;
                String direc = ListaDocumentoCabecera[0].direccion;
                String ctabancaria = ListaDocumentoCabecera[0].ctabancaria;
                String titularlinea = ListaDocumentoCabecera[0].titularlinea;
                String telefonoaportar = ListaDocumentoCabecera[0].telefonoportar;
                String codOperador = ListaDocumentoCabecera[0].codoperador;
                String direcinst = ListaDocumentoCabecera[0].direcinst;
                String horarioinst = ListaDocumentoCabecera[0].horainst;
                String fechaDocumento = ListaDocumentoCabecera[0].fechaDocumento;
                String estado = ListaDocumentoCabecera[0].estado;
                String codregist = ListaDocumentoCabecera[0].codregistrado.ToString();
                String fecharegist = ListaDocumentoCabecera[0].fecharegistrado;
                String codmodif = ListaDocumentoCabecera[0].codmodif.ToString();
                String fechamodif = ListaDocumentoCabecera[0].fechamodif;
                String codaprob = ListaDocumentoCabecera[0].codaprob.ToString();
                String fechaaprob = ListaDocumentoCabecera[0].fechaaprob;
                String codanul = ListaDocumentoCabecera[0].codanul.ToString();
                String fechaanul = ListaDocumentoCabecera[0].fechaanul;
                txtNPedido.Text = Npedido;
                hid_codCliente.Text = codcliente;
                txtCliente.Text = nomcliente;
                hid_tipoDoc.Text = tipoDoc;
                txtNIF.Text = Ndoc;
                txtTelefono.Text = telef;
                txtCorreo.Text = correo;
                txtDireccion.Text = direc;
                txtNCuenta.Text = ctabancaria;
                txtTitular.Text = titularlinea;
                txtNTelefonico.Text = telefonoaportar;
                cboOperador.Value = codOperador;
                txtDirInstalacion.Text = direcinst;
                cboHorario.Value = horarioinst;
                hid_fechaDocumento.Text = fechaDocumento;
                hid_Estado.Text = estado;
                hid_codRegistrado.Text = codregist;
                hid_fechaRegistrado.Text = fecharegist;
                hid_codModif.Text = codmodif;
                hid_fhModif.Text = fechamodif;
                hid_codAprob.Text = codaprob;
                hid_fhAprob.Text = fechaaprob;
                hid_codAnul.Text = codanul;
                hid_fhAnul.Text = fechaanul;
                ok = true;
            }
            catch (Exception)
            {
                ok = false;
            }
            return ok;
        }

        private void obtenerCabeceraPedidoInfoAuditoria(String nropedido)
        {
            try
            {
                ListaDocumentoCabeceraAuditoria = new List<DocumentoCabecera_InfoAuditoria_Result>();
                InterfaceRegistrarPedido = new clsFacadeRegistrarPedido();
                ListaDocumentoCabeceraAuditoria = InterfaceRegistrarPedido.ListarDocumentoCabeceraAuditoria(nropedido);
                String usuregist, usumodif, usuaprob, usuanul, fecharegist, fechamodif, fechaaprob, fechaanul;
                usuregist = ListaDocumentoCabeceraAuditoria[0].usuregist;
                usumodif = ListaDocumentoCabeceraAuditoria[0].usumodif;
                usuaprob = ListaDocumentoCabeceraAuditoria[0].usuaprob;
                usuanul = ListaDocumentoCabeceraAuditoria[0].usuanul;
                fecharegist = ListaDocumentoCabeceraAuditoria[0].fecharegist;
                fechamodif = ListaDocumentoCabeceraAuditoria[0].fechamodif;
                fechaaprob = ListaDocumentoCabeceraAuditoria[0].fechaaprob;
                fechaanul = ListaDocumentoCabeceraAuditoria[0].fechaanul;

                String estado = hid_Estado.Text;
                switch (estado)
                {
                    case "RG":
                        estado = "Registrado";
                        break;
                    case "AP":
                        estado = "Aprobado";
                        break;
                    case "AN":
                        estado = "Anulado";
                        break;
                    case "CN":
                        estado = "Cancelado";
                        break;
                    default:
                        estado = "";
                        break;
                }
                lblEstado.Text = estado;
                lblusuRegisro.Text = usuregist;
                lblusuModif.Text = usumodif;
                lblusuAprob.Text = usuaprob;
                lblusuAnul.Text = usuanul;

                lblfhRegistro.Text = fecharegist;
                lblfhModif.Text = fechamodif;
                lblfhAprob.Text = fechaaprob;
                lblfhAnul.Text = fechaanul;
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                MostrarComentario(msg);
            }
        }

        private void obtenerDetallePedido(String nropedido)
        {
            try
            {
                InterfaceRegistrarPedido = new clsFacadeRegistrarPedido();
                ListaDocumentoDetalle = InterfaceRegistrarPedido.ListarDocumentoDetalle(nropedido);
                dgvDetalle.DataSource = ListaDocumentoDetalle;
                dgvDetalle.DataBind();
                txtTotalPrecio.Text = CalcularTotal().ToString();
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                MostrarComentario(msg);
            }
        }

        private void MostrarComentario(String msg)
        {
            lblMensaje.Text = msg;
            ScriptManager.RegisterStartupScript(this, GetType(), "script", "pcMensaje.Show();", true);
        }

        private void Redireccionar(String msg, Boolean ok)
        {
            Session["msg"] = msg;
            Session["Grabacion"] = ok;
            Response.Redirect("~/Procesos/AdministrarPedido/frmAdministrarPedido.aspx");
        }

        protected void txtPenalidad_TextChanged(object sender, EventArgs e)
        {

        }
    }
}